package com.fm.demo.activity

import android.content.Context
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.ViewGroup
import android.webkit.JavascriptInterface
import android.webkit.WebResourceRequest
import android.webkit.WebView
import android.widget.LinearLayout
import com.afollestad.materialdialogs.MaterialDialog
import com.blankj.utilcode.util.LogUtils
import com.fm.common.base.BaseBActivity
import com.fm.demo.databinding.ActivityWebBinding
import com.just.agentweb.AgentWeb
import com.just.agentweb.WebViewClient


class WebActivity : BaseBActivity<ActivityWebBinding>() {
    private var mAgentWeb: AgentWeb? = null
    private var data = "<p class=\"MsoNormal\" style=\"text-indent:2em;\">\n" +
            "\t<span style=\"line-height:2.5;font-size:16px;\"><strong>欢乐斗地主</strong>一直以来就是很多玩家喜欢的休闲类游戏，不过在欢乐斗地主游戏中，玩家也不能瞎玩，要不然很容易走入对手的套路，尤其当对手在发布斗地主暗语时，一定要</span><span style=\"line-height:2.5;font-size:16px;\">确保能和队友之间打出一定的配合</span><span style=\"line-height:2.5;font-size:16px;\">，不然这局你就只能眼巴巴的看着其他玩家获胜。</span>\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-indent:2em;\">\n" +
            "\t<span style=\"line-height:2.5;font-size:16px;\">虽然这些暗语类似于作弊行为，但是你也需要知道这里面的含义，下面小编就来进行详细的分析！</span>\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-align:center;\">\n" +
            "\t<img style=\"max-width:100%;height:auto\" src=\"https://img.qipaiqun.com/upload/qrcode/2020/04/02/content/2020040216994752.jpg\" alt=\"【欢乐斗地主暗语】新手时期的憨憨错误，你一定也经历过\" width=\"500\" height=\"354\" title=\"【欢乐斗地主暗语】新手时期的憨憨错误，你一定也经历过\" align=\"\">\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-indent:2em;\">\n" +
            "\t<strong><span style=\"line-height:2.5;font-size:16px;\">欢乐斗地主暗语一：你是MM还是GG</span></strong>\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-indent:2em;\">\n" +
            "\t<span style=\"line-height:2.5;font-size:16px;\">如果你在游戏中听到了这句语音，千万不要自作多情感觉对手想要撩你，毕竟这句话含义并不是在询问你的性别，也并不是想要跟你处对象，其实就是暗示你打对子。尤其在面对队友不会打牌时，按照这样的提示可以让你知晓下一步应该怎么出牌，从而有效提升游戏胜算。</span>\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-align:center;\">\n" +
            "\t<img style=\"max-width:100%;height:auto\" src=\"https://img.qipaiqun.com/upload/qrcode/2020/04/02/content/2020040283357269.jpg\" alt=\"【欢乐斗地主暗语】新手时期的憨憨错误，你一定也经历过\" width=\"500\" height=\"474\" title=\"【欢乐斗地主暗语】新手时期的憨憨错误，你一定也经历过\" align=\"\">\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-indent:2em;\">\n" +
            "\t<strong><span style=\"line-height:2.5;font-size:16px;\">欢乐斗地主暗语二：和你合作真是太愉快了</span></strong>\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-indent:2em;\">\n" +
            "\t<span style=\"line-height:2.5;font-size:16px;\">当你在欢乐斗地主游戏中听到这样的语音时候，可得要看看自己手中的牌是否还有炸弹，有炸弹的话就是快速的丢出去，这是为你获得更多奖励翻倍的筹码，毕竟你的队友还只剩下炸弹了。</span>\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-align:center;\">\n" +
            "\t<img style=\"max-width:100%;height:auto\" src=\"https://img.qipaiqun.com/upload/qrcode/2020/04/02/content/2020040257944611.jpg\" alt=\"【欢乐斗地主暗语】新手时期的憨憨错误，你一定也经历过\" width=\"454\" height=\"554\" title=\"【欢乐斗地主暗语】新手时期的憨憨错误，你一定也经历过\" align=\"\">\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-indent:2em;\">\n" +
            "\t<strong><span style=\"line-height:2.5;font-size:16px;\">欢乐斗地主暗语三：不要走，决战到天亮</span></strong>\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-indent:2em;\">\n" +
            "\t<span style=\"line-height:2.5;font-size:16px;\">这句暗语并不是对你的牌技产生羡慕，而是让你不要再出炸弹了，因为地主的手中还有炸弹，如果你瞎玩不懂这句话的含义，直接炸弹出去，那么就没有下一步牵制地主的底牌了，所以在这个时候一定要听从队友的建议，这样才能够让地主无从出牌。</span>\n" +
            "</p>\n" +
            "<p class=\"MsoNormal\" style=\"text-align:center;\">\n" +
            "\t<img style=\"max-width:100%;height:auto\" src=\"https://img.qipaiqun.com/upload/qrcode/2020/04/02/content/2020040228062554.jpg\" alt=\"【欢乐斗地主暗语】新手时期的憨憨错误，你一定也经历过\" width=\"500\" height=\"297\" title=\"【欢乐斗地主暗语】新手时期的憨憨错误，你一定也经历过\" align=\"\">\n" +
            "</p>\n"

    override fun initView(savedInstanceState: Bundle?) {
        initToolbar(binding.rootToolbar,"", true)

        mAgentWeb = AgentWeb.with(this)
            .setAgentWebParent(
                binding.webFlContent,
                LinearLayout.LayoutParams(
                    ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.MATCH_PARENT
                )
            )
            .useDefaultIndicator()
            .setWebViewClient(object : WebViewClient() {
                override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
                    return false
                }

                override fun onPageFinished(view: WebView, url: String?) {
                    super.onPageFinished(view, url)
                    val javascript = "javascript:function ResizeImages() {" +
                            "var myimg,oldwidth;" +
                            "var maxwidth = document.body.clientWidth;" +
                            "for(i=0;i <document.images.length;i++){" +
                            "myimg = document.images[i];" +
                            "if(myimg.width > maxwidth){" +
                            "oldwidth = myimg.width;" +
                            "myimg.width = maxwidth - 20;" +
                            "}" +
                            "}" +
                            "}"
//                    val width: String = java.lang.String.valueOf(ScreenUtils.getScreenWidth())
                    view.loadUrl(javascript)
                    view.loadUrl("javascript:ResizeImages();")
                }
            })
            .createAgentWeb()
            .ready()
            .go("file:///android_asset/www/index.html")


        mAgentWeb?.let {
            it.jsInterfaceHolder.addJavaObject("android", AndroidInterface(this))
            LogUtils.e("web view 注入交互接口")
//            it.urlLoader.loadDataWithBaseURL(null, data, "text/html", "utf-8", null)
        }

        binding.webBtnShowJsAlert0.setOnClickListener {
            mAgentWeb?.let {
                it.jsAccessEntrace.callJs("showAlert0('Android 调用 有参数 js 方法 弹出 alert')")
                LogUtils.e("Android 调用 有参数 js 方法 ，弹出alert")
            }
        }
        binding.webBtnShowJsAlert1.setOnClickListener {
            mAgentWeb?.let {
                it.jsAccessEntrace.callJs("showAlert1()")
                LogUtils.e("Android 调用 无参数 js 方法 ，弹出alert")
            }
        }
    }

    class AndroidInterface constructor(private val context: Context) {
        private val deliver: Handler = Handler(Looper.getMainLooper())

        @JavascriptInterface
        fun showDialog0(jsonString: String) {
            LogUtils.e("show dialog 0")
            deliver.post {
                MaterialDialog(context)
                    .show {
                        title(text = "有参数")
                        message(text = jsonString)
                    }
            }
        }

        @JavascriptInterface
        fun showDialog1() {
            LogUtils.e("show dialog 1")
            deliver.post {
                MaterialDialog(context)
                    .show {
                        title(text = "无参数")
                        message(text = "js -> Android 无参数")
                    }
            }
        }
    }


    override fun onResume() {
        super.onResume()
        mAgentWeb?.webLifeCycle?.onResume()
    }

    override fun onPause() {
        super.onPause()
        mAgentWeb?.webLifeCycle?.onPause()
    }

    override fun onDestroy() {
        mAgentWeb?.webLifeCycle?.onDestroy()
        super.onDestroy()
    }
}
